#ifndef LZ77_H_
#define LZ77_H_

#include <stdio.h>
#include <stdlib.h>
#include "../myTypes.h"
#include "../bit.h"
#include "../barre.h"


#define LZ77ID	"lz77"


//en-tête de fichier pour LZ77
typedef struct {
	char id[4];		//4 //identifiant d'un fichier compressé avec lz77
	uint dicLen;	//2	//taille du dictionnaire
	uint readbuflen;//2	//longueur du buffer a utiliser pour décompresser
	size_t oriSize; //4  //taille du fichier original non compressé
	int bufLen; //2 // taille du buffer utilisé pour la décompression
} lz77header;


//Initialisation du module lz77
extern void	LZ77_init(uint dictionaryLen, uint readBufLen);
extern void LZ77_encode(bitbuf_t * dst, bitbuf_t * src);
extern void LZ77_decode(bitbuf_t * dst, bitbuf_t * src);
extern void LZ77_compress(FILE * out, FILE * in, int verbose);
extern void LZ77_decompress(FILE * out, FILE * in,int verbose);

#endif /* LZ77_H_ */
